package net.thucydides.core.steps; import com.google.inject.Key; import net.thucydides.core.guice.Injectors; import net.thucydides.core.logging.ThucydidesLogging; import net.thucydides.core.pages.Pages; import net.thucydides.core.statistics.Statistics; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; public class Listeners { private static final Logger LOGGER = LoggerFactory.getLogger(Listeners.class); public static BaseStepListenerBuilder getBaseStepListener() { return new BaseStepListenerBuilder(); } public static class BaseStepListenerBuilder { private Pages pages; public BaseStepListenerBuilder and() { return this; } public BaseStepListenerBuilder withPages(Pages pages) { this.pages = pages; return this; } public BaseStepListener withOutputDirectory(File outputDirectory) { if (pages != null) { return new BaseStepListener(outputDirectory, pages); } else { return new BaseStepListener(outputDirectory); } } } public static StepListener getLoggingListener() { return Injectors.getInjector().getInstance(Key.get(StepListener.class, ThucydidesLogging.class)); } public static StepListener getStatisticsListener() { try { return Injectors.getInjector().getInstance(Key.get(StepListener.class, Statistics.class)); } catch (Throwable statisticsListenerException) { LOGGER.error("Failed to create the statistics listener - possible database configuration issue", statisticsListenerException); } return null; } }